匷åãªã°ã©ãããŒã¿ããŒã¹ã§ããNeo4jãNeo4jãã©ã€ãã䜿çšããŠPythonãšçµ±åããæ¹æ³ãåŠã³ãå®è·µçãªäŸã§ããŸããŸãªãŠãŒã¹ã±ãŒã¹ãæ¢ããŸãã
ã°ã©ãããŒã¿ããŒã¹ïŒNeo4j Python飿º â å æ¬çãªã¬ã€ã
ã°ã©ãããŒã¿ããŒã¹ã¯ãçžäºæ¥ç¶ãããããŒã¿ã®æ±ãæ¹ã驿°ããŠããŸãã Neo4jã¯ãäž»èŠãªã°ã©ãããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã§ãããããŒã¿ãã€ã³ãéã®é¢ä¿ãã¢ãã«åããã³ã¯ãšãªããããã®åŒ·åã§çŽæçãªãã©ãããã©ãŒã ãæäŸããŸãã Neo4jãPythonãšçµ±åããããšã§ãéçºè ã¯Pythonã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã®è±å¯ãªãšã³ã·ã¹ãã ãæŽ»çšããŠãããŒã¿åæãèŠèŠåãããã³ã¢ããªã±ãŒã·ã§ã³éçºãè¡ãããšãã§ããŸãã ãã®å æ¬çãªã¬ã€ãã§ã¯ãNeo4j Pythonçµ±åã®åºç€ã«ã€ããŠãã€ã³ã¹ããŒã«ãããŒã¿ã¢ããªã³ã°ãã¯ãšãªãããã³å®è·µçãªäŸãçšããé«åºŠãªãŠãŒã¹ã±ãŒã¹ãåãäžããŸãã
ã°ã©ãããŒã¿ããŒã¹ãšNeo4jã®çè§£
ããŒãã«ã«ããŒã¿ãæ ŒçŽããåŸæ¥ã®ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãšã¯ç°ãªããã°ã©ãããŒã¿ããŒã¹ã¯ããŒããšãªã¬ãŒã·ã§ã³ã·ããã䜿çšããŠããŒã¿ãšãã®æ¥ç¶ã衚ããŸãã ãã®æ§é ã«ããããœãŒã·ã£ã«ãããã¯ãŒã¯ãã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ããã¬ããžã°ã©ããäžæ£æ€åºãªã©ãè€éãªé¢ä¿ãæ±ãã¢ããªã±ãŒã·ã§ã³ã«æé©ã§ãã ã°ã©ãããŒã¿ããŒã¹ã®äž»èŠãªæŠå¿µã¯æ¬¡ã®ãšããã§ãã
- ããŒãïŒããŒã¿å ã®ãšã³ãã£ãã£ãŸãã¯ãªããžã§ã¯ãã衚ããŸãã
- ãªã¬ãŒã·ã§ã³ã·ããïŒããŒãéã®æ¥ç¶ã衚ãããããã®é¢é£ãå®çŸ©ããŸãã
- ããããã£ïŒããŒããšãªã¬ãŒã·ã§ã³ã·ããã«é¢é£ä»ãããã屿§ã§ãè¿œå æ å ±ãæäŸããŸãã
Neo4jã¯ã次ã®å©ç¹ãæã€å ç¢ã§ã¹ã±ãŒã©ãã«ãªã°ã©ãããŒã¿ããŒã¹ãšããŠéç«ã£ãŠããŸãã
- ãã€ãã£ãã°ã©ãã¹ãã¬ãŒãžïŒNeo4jã¯ã°ã©ãæ§é ã§ããŒã¿ãæ ŒçŽããããããªã¬ãŒã·ã§ã³ã·ããã®å¹ççãªãã©ããŒã¹ãšã¯ãšãªãå¯èœã§ãã
- Cypherã¯ãšãªèšèªïŒCypherã¯ãã°ã©ãããŒã¿ãç°¡åãã€çŽæçã«ã¯ãšãªã§ããããã«èšèšããã宣èšåã®ã°ã©ãã¯ãšãªèšèªã§ãã ãã®æ§æã¯ãã¿ãŒã³ãããã³ã°ã«è§ŠçºãããŠãããè€éãªé¢ä¿ãç°¡åã«è¡šçŸã§ããŸãã
- ACIDæºæ ïŒNeo4jã¯ACIDïŒååæ§ãäžè²«æ§ãå颿§ãæ°žç¶æ§ïŒãã©ã³ã¶ã¯ã·ã§ã³ããµããŒãããããŒã¿ã®æŽåæ§ãä¿èšŒããŸãã
- ã¹ã±ãŒã©ããªãã£ïŒNeo4jã¯ãæ°ååã®ããŒããšãªã¬ãŒã·ã§ã³ã·ãããæã€å€§èŠæš¡ãªã°ã©ããåŠçã§ããŸãã
- ã³ãã¥ããã£ãšãšã³ã·ã¹ãã ïŒNeo4jã«ã¯æŽ»æ°ã®ããã³ãã¥ããã£ãšãããŒã«ãšã©ã€ãã©ãªã®è±å¯ãªãšã³ã·ã¹ãã ããããŸãã
Neo4jãšPythonç°å¢ã®ã»ããã¢ãã
çµ±åã«å ¥ãåã«ãNeo4jãšPythonãã»ããã¢ãããããŠããããšã確èªããŠãã ããã ã¹ããããã€ã¹ãããã¬ã€ãã¯æ¬¡ã®ãšããã§ãã
1. Neo4jã®ã€ã³ã¹ããŒã«
Neo4jã¯ãããã€ãã®æ¹æ³ã§ã€ã³ã¹ããŒã«ã§ããŸãã
- Neo4j DesktopïŒããŒã«ã«ã®Neo4jã€ã³ã¹ã¿ã³ã¹ã管çããããã®ã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ïŒéçºã«æšå¥šïŒã å ¬åŒã®Neo4j Webãµã€ãããããŠã³ããŒãããŠãã ããïŒhttps://neo4j.com/download/
- Neo4j AuraDBïŒNeo4jã®ã¯ã©ãŠãããŒã¹ã®ã°ã©ãããŒã¿ããŒã¹ãµãŒãã¹ïŒç¡ææ ããïŒã 次ã§ãµã€ã³ã¢ããããŠãã ããïŒhttps://neo4j.com/cloud/platform/aura/
- DockerïŒDockerã³ã³ããã§Neo4jãå®è¡ããŸãïŒãããã€ã¡ã³ãããã³CI/CDã«é©ããŠããŸãïŒã
- ããã±ãŒãžãããŒãžã£ãŒïŒã·ã¹ãã ã®ããã±ãŒãžãããŒãžã£ãŒã䜿çšããŠNeo4jãã€ã³ã¹ããŒã«ããŸãïŒäŸïŒDebian/Ubuntuã®`apt-get`ãmacOSã®`brew`ïŒã
ãã®ã¬ã€ãã§ã¯ãNeo4j Desktopã䜿çšããŠãããšæ³å®ããŸãã ã€ã³ã¹ããŒã«ããããæ°ããã°ã©ãããŒã¿ããŒã¹ãäœæããŠéå§ããŸãã
2. Neo4j Pythonãã©ã€ãã®ã€ã³ã¹ããŒã«
Neo4j Pythonãã©ã€ãã¯ãPythonããNeo4jããŒã¿ããŒã¹ã«æ¥ç¶ããããã®å ¬åŒã©ã€ãã©ãªã§ãã pipã䜿çšããŠã€ã³ã¹ããŒã«ããŸãã
pip install neo4j
3. Pythonç°å¢ã®ã»ããã¢ãã
ãããžã§ã¯ãã®äŸåé¢ä¿ãåé¢ããããã«ãä»®æ³ç°å¢ã䜿çšããããšããå§ãããŸãã æ¬¡ã䜿çšããŠä»®æ³ç°å¢ãäœæããŸãã
python -m venv venv
source venv/bin/activate # On Linux/macOS
venv\Scripts\activate # On Windows
PythonããNeo4jãžã®æ¥ç¶
Neo4jãšPythonãã©ã€ããã€ã³ã¹ããŒã«ãããã®ã§ãããŒã¿ããŒã¹ã«æ¥ç¶ããŸãããã
from neo4j import GraphDatabase
uri = "bolt://localhost:7687" # Replace with your Neo4j URI
username = "neo4j" # Replace with your Neo4j username
password = "password" # Replace with your Neo4j password
driver = GraphDatabase.driver(uri, auth=(username, password))
def close_driver():
driver.close()
print("Connection to Neo4j successful!")
éèŠïŒ`bolt://localhost:7687`ã`neo4j`ãããã³`password`ãå®éã®Neo4jæ¥ç¶ã®è©³çްã«çœ®ãæããŠãã ããã
Cypherã䜿çšããCRUDæäœã®å®è¡
Cypherã¯Neo4jã®ã¯ãšãªèšèªã§ãã ããã䜿çšãããšãã°ã©ãããŒã¿ããŒã¹å ã®ããŒã¿ãäœæãèªã¿åããæŽæ°ãããã³åé€ïŒCRUDïŒã§ããŸãã Neo4j Pythonãã©ã€ãã¯ãCypherã¯ãšãªãå®è¡ããããã®ã¡ãœãããæäŸããŸãã
1. ããŒããšãªã¬ãŒã·ã§ã³ã·ããã®äœæ
人ã ãšãããã®æ¥ç¶ã衚ãããã€ãã®ããŒããäœæããŸãããã
def create_nodes_and_relationships():
with driver.session() as session:
query = (
"""
CREATE (a:Person {name: $name1, city: $city1})
CREATE (b:Person {name: $name2, city: $city2})
CREATE (a)-[:KNOWS]->(b)
"""
)
session.run(query, name1="Alice", city1="New York", name2="Bob", city2="London")
print("Nodes and relationships created successfully!")
create_nodes_and_relationships()
ãã®Cypherã¯ãšãªã¯ãã©ãã«`Person`ãšããããã£`name`ããã³`city`ãæã€2ã€ã®ããŒããäœæããŸãã ãŸãããããã®éã«ã¿ã€ã`KNOWS`ã®ãªã¬ãŒã·ã§ã³ã·ãããäœæããŸãã
2. ããŒã¿ã®èªã¿åã
ã°ã©ãããããŒã¿ãååŸããã«ã¯ãCypherã§`MATCH`å¥ã䜿çšããŸãã
def get_all_people():
with driver.session() as session:
query = "MATCH (p:Person) RETURN p.name AS name, p.city AS city"
result = session.run(query)
for record in result:
print(f"Name: {record['name']}, City: {record['city']}")
get_all_people()
ãã®ã¯ãšãªã¯ãã©ãã«`Person`ãæã€ãã¹ãŠã®ããŒããååŸãããããã®`name`ããã³`city`ããããã£ãè¿ããŸãã
3. ããŒã¿ã®æŽæ°
ããŒãã®ããããã£ãæŽæ°ããã«ã¯ã`SET`å¥ã䜿çšããŸãã
def update_person_city(name, new_city):
with driver.session() as session:
query = "MATCH (p:Person {name: $name}) SET p.city = $new_city"
session.run(query, name=name, new_city=new_city)
print(f"City updated for {name} to {new_city}")
update_person_city("Alice", "Paris")
get_all_people()
ãã®ã¯ãšãªã¯ãæå®ããã`name`ãæã€ããŒããèŠã€ãããã®`city`ããããã£ãæŽæ°ããŸãã
4. ããŒã¿ã®åé€
ããŒããšãªã¬ãŒã·ã§ã³ã·ãããåé€ããã«ã¯ã`DELETE`å¥ã䜿çšããŸãã éèŠïŒããŒãèªäœãåé€ããåã«ãããŒãã«æ¥ç¶ãããŠãããªã¬ãŒã·ã§ã³ã·ãããæåã«åé€ããå¿ èŠããããŸãã
def delete_person(name):
with driver.session() as session:
# Detach and delete node
query = "MATCH (p:Person {name: $name}) DETACH DELETE p"
session.run(query, name=name)
print(f"Person {name} deleted.")
delete_person("Bob")
get_all_people()
ãã®ã¯ãšãªã¯ãæå®ããã`name`ãæã€ããŒããèŠã€ãããã¹ãŠã®ãªã¬ãŒã·ã§ã³ã·ããããã¿ããããŠãããããŒããåé€ããŸãã
ãã©ã¡ãŒã¿ã®æäœ
Cypherã¯ãšãªã§ãã©ã¡ãŒã¿ã䜿çšããããšã¯ãã»ãã¥ãªãã£ãšããã©ãŒãã³ã¹ã«ãšã£ãŠéåžžã«éèŠã§ãã ããã«ãããSQLã€ã³ãžã§ã¯ã·ã§ã³ã®è匱æ§ã鲿¢ãããNeo4jãã¯ãšãªã®å®è¡ãæé©åã§ããããã«ãªããŸãã äžèšã®äŸïŒ`$name`ã`$city`ã`$new_city`ïŒã§ãã§ã«ãã©ã¡ãŒã¿ã®äœ¿çšæ³ãèŠãŠããŸããã
é«åºŠãªNeo4j Python飿º
åºæ¬çãªCRUDæäœãè¶ ããŠãNeo4j Pythonçµ±åã¯ãé«åºŠãªããŒã¿åæããã³ã¢ããªã±ãŒã·ã§ã³éçºã®ããã®åŒ·åãªæ©èœãæäŸããŸãã
1. ãã©ã³ã¶ã¯ã·ã§ã³
ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããŒã¿ã®äžè²«æ§ãšååæ§ãä¿èšŒããŸãã `transaction`颿°ã䜿çšããŠãåäžã®ãã©ã³ã¶ã¯ã·ã§ã³å ã§è€æ°ã®Cypherã¯ãšãªãå®è¡ããŸãã
def create_person_and_relationship(name1, city1, name2, city2):
def transaction(tx, name1, city1, name2, city2):
query = (
"""
CREATE (a:Person {name: $name1, city: $city1})
CREATE (b:Person {name: $name2, city: $city2})
CREATE (a)-[:KNOWS]->(b)
"""
)
tx.run(query, name1=name1, city1=city1, name2=name2, city2=city2)
with driver.session() as session:
session.execute_write(transaction, name1="Carlos", city1="Madrid", name2="Diana", city2="Rome")
print("Transaction completed successfully!")
create_person_and_relationship("Carlos", "Madrid", "Diana", "Rome")
2. å€§èŠæš¡ããŒã¿ã»ããã®åŠç
å€§èŠæš¡ããŒã¿ã»ããã®å Žåãããã©ãŒãã³ã¹ãåäžãããããã«ãããåŠçã®äœ¿çšãæ€èšããŠãã ããã Neo4j Pythonãã©ã€ãã¯ãåäžã®ãããã§è€æ°ã®ã¯ãšãªãå®è¡ããããã®ã¡ãœãããæäŸããŸãã
def create_multiple_people(people_data):
with driver.session() as session:
query = (
"""
UNWIND $people AS person
CREATE (p:Person {name: person.name, city: person.city})
"""
)
session.run(query, people=people_data)
people_data = [
{"name": "Elena", "city": "Berlin"},
{"name": "Faisal", "city": "Dubai"},
{"name": "Grace", "city": "Sydney"}
]
create_multiple_people(people_data)
ãã®äŸã§ã¯ã`UNWIND`å¥ãšèŸæžã®ãªã¹ãã䜿çšããŠè€æ°ã®`Person`ããŒããäœæããæ¹æ³ã瀺ããŸãã
3. ã°ã©ãã¢ã«ãŽãªãºã
Neo4jã¯ããã¹æ€çŽ¢ãäžå¿æ§ãã³ãã¥ããã£æ€åºãé¡äŒŒæ§ã¢ã«ãŽãªãºã ãªã©ãããŸããŸãªã°ã©ãã¢ã«ãŽãªãºã ã®çµã¿èŸŒã¿ãµããŒããæäŸããŸãã CypherãšNeo4j Pythonãã©ã€ãã䜿çšããŠããããã®ã¢ã«ãŽãªãºã ãå®è¡ã§ããŸãã
def find_shortest_path(start_name, end_name):
with driver.session() as session:
query = (
"""
MATCH (start:Person {name: $start_name}), (end:Person {name: $end_name})
MATCH p=shortestPath((start)-[*]-(end))
RETURN p
"""
)
result = session.run(query, start_name=start_name, end_name=end_name)
for record in result:
path = record['p']
nodes = [node.get('name') for node in path.nodes]
print(f"Shortest path from {start_name} to {end_name}: {nodes}")
find_shortest_path("Alice", "Diana")
ãã®ã¯ãšãªã¯ã`shortestPath`ã¢ã«ãŽãªãºã ã䜿çšããŠã2ã€ã®`Person`ããŒãéã®æçãã¹ãæ€çŽ¢ããŸãã
4. ããŒã¿ã®èŠèŠå
Neo4jãPythonãšçµ±åãããšãNetworkXãmatplotlibãPlotlyãªã©ã®ã©ã€ãã©ãªã䜿çšããŠã°ã©ãããŒã¿ãèŠèŠåã§ããŸãã Neo4jããããŒã¿ãã¯ãšãªããé©åãªåœ¢åŒã«å€æããŠãããèŠèŠåãäœæã§ããŸãã
import networkx as nx
import matplotlib.pyplot as plt
def visualize_graph():
with driver.session() as session:
query = "MATCH (p1:Person)-[r:KNOWS]->(p2:Person) RETURN p1.name AS source, p2.name AS target"
result = session.run(query)
G = nx.Graph()
for record in result:
G.add_edge(record['source'], record['target'])
nx.draw(G, with_labels=True, node_color='skyblue', node_size=2000, font_size=10, font_weight='bold')
plt.show()
visualize_graph()
ãã®äŸã§ã¯ãNetworkXãšmatplotlibã䜿çšããŠã°ã©ãã®èŠèŠåãäœæããæ¹æ³ã瀺ããŸãã `Person`ããŒãéã®`KNOWS`ãªã¬ãŒã·ã§ã³ã·ãããã¯ãšãªãããããã¯ãŒã¯ã衚ãã°ã©ããäœæããŸãã
ãŠãŒã¹ã±ãŒã¹
Neo4jãšPythonã®çµ±åã¯ã倿§ãªæ¥çã®ããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã«åœ¹ç«ã¡ãŸãã ããã€ãã®äž»èŠãªãŠãŒã¹ã±ãŒã¹ã次ã«ç€ºããŸãã
1. ãœãŒã·ã£ã«ãããã¯ãŒã¯åæ
äŸïŒãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã äžã®ãŠãŒã¶ãŒéã®æ¥ç¶ãåæããŠã圱é¿åã®ããã¡ã³ããŒãç¹å®ããã³ãã¥ããã£ãæ€åºããæ°ããæ¥ç¶ãæšå¥šããŸãã
å®è£ ïŒããŒãã¯ãŠãŒã¶ãŒã衚ãããªã¬ãŒã·ã§ã³ã·ããã¯æ¥ç¶ïŒå人ããã©ãã¯ãŒãªã©ïŒã衚ããŸãã äžå¿æ§ãã³ãã¥ããã£æ€åºãªã©ã®ã°ã©ãã¢ã«ãŽãªãºã ã䜿çšããŠããããã¯ãŒã¯æ§é ãåæããŸãã æ¬¡ã«ãPythonã©ã€ãã©ãªã䜿çšããŠãããã¯ãŒã¯ãèŠèŠåããæŽå¯ãæœåºã§ããŸãã ã°ããŒãã«ãªãœãŒã·ã£ã«ãããã¯ãŒã¯ã®ã·ããªãªãæ³åããŠãã ãããããŸããŸãªå°åã«ããããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãåæããŠãç¹å®ã®èšèªã°ã«ãŒããŸãã¯å°ççé åã®ã€ã³ãã«ãšã³ãµãŒãç¹å®ã§ããŸãã ãã®æ å ±ã¯ãã¿ãŒã²ãã£ã³ã°ãããåºåãã³ã³ãã³ãã®æšå¥šã«åœ¹ç«ã¡ãŸãã
2. ã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã
äŸïŒé¡§å®¢ã®è³Œå ¥å±¥æŽãé²èЧè¡åãããã³åæ§ã®é¡§å®¢ã®å¥œã¿ã«åºã¥ããŠã補åãé¡§å®¢ã«æšå¥šããŸãã
å®è£ ïŒããŒãã¯é¡§å®¢ãšè£œåã衚ããŸãã ãªã¬ãŒã·ã§ã³ã·ããã¯ãè³Œå ¥ããã¥ãŒãããã³è©äŸ¡ã衚ããŸãã ã³ã©ãã¬ãŒãã£ããã£ã«ã¿ãªã³ã°ãé¡äŒŒæ§ã¢ã«ãŽãªãºã ãªã©ã®ã°ã©ãã¢ã«ãŽãªãºã ã䜿çšããŠãé¡§å®¢ãæ°ã«å ¥ãå¯èœæ§ã®ãã補åãç¹å®ããŸãã ããšãã°ãeã³ããŒã¹ãã©ãããã©ãŒã ã¯ãã°ã©ãããŒã¿ããŒã¹ã䜿çšããŠãããŸããŸãªåœã«ããã顧客ã®å¥œã¿ããããã³ã°ãã顧客ã®å°åãŸãã¯åæ§ã®æåçèæ¯ãæã€ãŠãŒã¶ãŒã«äººæ°ã®ãã補åãæšå¥šã§ããŸãã
3. ãã¬ããžã°ã©ã
äŸïŒç¹å®ã®ãã¡ã€ã³ïŒå»çç¥èãéèããŒã¿ãªã©ïŒã®ãšã³ãã£ãã£éã®äºå®ãšé¢ä¿ã衚ããã¬ããžã°ã©ããæ§ç¯ããŸãã
å®è£ ïŒããŒãã¯ãšã³ãã£ãã£ïŒçŸæ£ãè¬ç©ãéºäŒåãªã©ïŒã衚ãããªã¬ãŒã·ã§ã³ã·ããã¯ãããã®éã®æ¥ç¶ïŒæ²»çãçžäºäœçšãªã©ïŒã衚ããŸãã Cypherã䜿çšããŠãã¬ããžã°ã©ããã¯ãšãªããé¢é£æ å ±ãæœåºããŸãã ã°ããŒãã«ãªå»çãã¬ããžã°ã©ããæ€èšããŠãã ãããããã䜿çšããŠãããŸããŸãªæ°æã°ã«ãŒãéã®æœåšçãªè¬ç©çžäºäœçšãèŠã€ããããç¹å®ã®å°ççãªå Žæã«èå»¶ããŠããçŸæ£ã®ãªã¹ã¯ãã¡ã¯ã¿ãŒãç¹å®ãããã§ããŸãã ããã«ãããããããŒãœãã©ã€ãºããã广çãªãã«ã¹ã±ã¢ãœãªã¥ãŒã·ã§ã³ã«ã€ãªããå¯èœæ§ããããŸãã
4. äžæ£æ€åº
äŸïŒã¢ã«ãŠã³ããIPã¢ãã¬ã¹ãããã³ããã€ã¹éã®æ¥ç¶ãã¿ãŒã³ãåæããŠãäžæ£ãªãã©ã³ã¶ã¯ã·ã§ã³ãæ€åºããŸãã
å®è£ ïŒããŒãã¯ã¢ã«ãŠã³ããIPã¢ãã¬ã¹ãããã³ããã€ã¹ã衚ããŸãã ãªã¬ãŒã·ã§ã³ã·ããã¯ããã©ã³ã¶ã¯ã·ã§ã³ãšæ¥ç¶ã衚ããŸãã ãã¹æ€çŽ¢ãã³ãã¥ããã£æ€åºãªã©ã®ã°ã©ãã¢ã«ãŽãªãºã ã䜿çšããŠãäžå¯©ãªãã¿ãŒã³ãç¹å®ããäžæ£è¡çºãæ€åºããŸãã ããšãã°ãéèæ©é¢ã¯ã°ã©ãããŒã¿ããŒã¹ã䜿çšããŠãããŸããŸãªåœãžã®ééã远跡ãããããŒãã³ããªã³ã°ããã®ä»ã®äžæ£è¡çºã瀺ãå¯èœæ§ã®ããç°åžžãªãã¿ãŒã³ãç¹å®ã§ããŸãã ãã®åœå¢ãè¶ããåæã¯ãã°ããŒãã«ãªéèç¯çœªãšéãããã«äžå¯æ¬ ã§ãã
5. ãµãã©ã€ãã§ãŒã³ç®¡ç
äŸïŒãµãã©ã€ãã§ãŒã³ãéããŠååã®æµãã远跡ããŠãããã«ããã¯ãç¹å®ããããžã¹ãã£ã¯ã¹ãæé©åããéææ§ãåäžãããŸãã
å®è£ ïŒããŒãã¯ããµãã©ã€ã€ãŒãã¡ãŒã«ãŒããã£ã¹ããªãã¥ãŒã¿ãŒãããã³å°å£²æ¥è ã衚ããŸãã ãªã¬ãŒã·ã§ã³ã·ããã¯ãååã®æµãã衚ããŸãã ãã¹æ€çŽ¢ãäžå¿æ§ãªã©ã®ã°ã©ãã¢ã«ãŽãªãºã ã䜿çšããŠããµãã©ã€ãã§ãŒã³ãåæããéèŠãªãã€ã³ããç¹å®ããŸãã ããã»ã¹å šäœãèŠèŠåããæœåšçãªãªã¹ã¯ãäºæž¬ã§ããŸãã ããšãã°ãã°ããŒãã«ãªè£œé äŒç€Ÿã¯ã°ã©ãããŒã¿ããŒã¹ã䜿çšããŠãããŸããŸãªåœããã®åææã®èª¿éã远跡ããå°æ¿åŠçã€ãã³ããèªç¶çœå®³ã«ãããµãã©ã€ãã§ãŒã³ã®æœåšçãªäžæãç¹å®ã§ããŸãã ããã«ããã調éãç©æ¥µçã«å€æ§åãããªã¹ã¯ã軜æžã§ããŸãã
ãã¹ããã©ã¯ãã£ã¹
Neo4j Pythonçµ±åãæåãããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããã
- ãã©ã¡ãŒã¿ã®äœ¿çšïŒSQLã€ã³ãžã§ã¯ã·ã§ã³ã鲿¢ããããã©ãŒãã³ã¹ãåäžãããããã«ãCypherã¯ãšãªã§ã¯åžžã«ãã©ã¡ãŒã¿ã䜿çšããŠãã ããã
- ã¯ãšãªã®æé©åïŒCypherã¯ãšãªã®å®è¡èšç»ãåæããããã©ãŒãã³ã¹ãæé©åããŸãã ã€ã³ããã¯ã¹ã䜿çšããŠãããŒã¿ååŸãé«éåããŸãã
- ãšã©ãŒåŠçïŒäŸå€ããã£ããããã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ãã·ã¥ãé²ãããã«ãé©åãªãšã©ãŒåŠçãå®è£ ããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ã®äœ¿çšïŒããŒã¿ã®äžè²«æ§ãä¿èšŒããããã«ãè€æ°ã®æäœããã©ã³ã¶ã¯ã·ã§ã³ã§ã©ããããŸãã
- å®å šãªæ¥ç¶ïŒè»¢éäžã®ããŒã¿ãä¿è·ããããã«ãå®å šãªæ¥ç¶ïŒBolt+SSLãªã©ïŒã䜿çšããŸãã
- ããã©ãŒãã³ã¹ã®ç£èŠïŒNeo4jã®ããã©ãŒãã³ã¹ãç£èŠããæœåšçãªããã«ããã¯ãç¹å®ããŸãã
- ããŒã¿ã¢ããªã³ã°ïŒç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«åãããŠæé©ãªããŒã¿ã¢ãã«ãèšèšããæéãè²»ãããŠãã ããã
çµè«
Neo4jãPythonãšçµ±åããããšã§ãçžäºæ¥ç¶ãããããŒã¿ãæäœããããã®åŒ·åãªãã©ãããã©ãŒã ãæäŸãããŸãã Neo4j Pythonãã©ã€ããšCypherã¯ãšãªèšèªã掻çšããããšã§ãéçºè ã¯ãœãŒã·ã£ã«ãããã¯ãŒã¯åæãã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ããã¬ããžã°ã©ããäžæ£æ€åºãããã³ãã®ä»ã®å€ãã®ãã¡ã€ã³åãã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã ãã®ã¬ã€ãã§ã¯ãNeo4j Pythonçµ±åã®å æ¬çãªæŠèŠã«ã€ããŠãã€ã³ã¹ããŒã«ãããŒã¿ã¢ããªã³ã°ãã¯ãšãªãããã³å®è·µçãªäŸãçšããé«åºŠãªãŠãŒã¹ã±ãŒã¹ãåãäžããŸããã ã°ã©ãããŒã¿ããŒã¹ã®äººæ°ãé«ãŸãç¶ããã«ã€ããŠãNeo4j Pythonçµ±åãç¿åŸããããšã¯ãããŒã¿ãµã€ãšã³ãã£ã¹ããšéçºè ã«ãšã£ãŠè²Žéãªã¹ãã«ã«ãªããŸãã è©³çŽ°ãªæ å ±ãšé«åºŠãªæ©èœã«ã€ããŠã¯ãNeo4jã®ããã¥ã¡ã³ãïŒhttps://neo4j.com/docs/ïŒããã³Neo4j Pythonãã©ã€ãã®ããã¥ã¡ã³ãïŒhttps://neo4j.com/docs/python-manual/current/ïŒãåç §ããŠãã ããã
äŸãšãŠãŒã¹ã±ãŒã¹ãç¹å®ã®ããŒãºãšã³ã³ããã¹ãã«é©åãããããšãå¿ããªãã§ãã ããã ã°ã©ãããŒã¿ããŒã¹ã®å¯èœæ§ã¯åºå€§ã§ãããé©åãªããŒã«ãšç¥èãããã°ãããŒã¿ãã貎éãªæŽå¯ãåŒãåºãããšãã§ããŸãã